import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken,removeToken,removeUserInfoID } from '@/utils/auth'
// create an axios instance
const service = axios.create({
    baseURL:'http://192.168.110.15',
    // baseURL:'http://mpw.com',
    // baseURL:'https://ympai.net/',
    //  baseURL: 'http://192.168.110.168',

    timeout: 9000 // request timeout
  })

service.interceptors.request.use(
config => {
    // do something before request is sent

    // if (store.getters.token) {
    // let each request carry token
    // ['X-Token'] is a custom headers key
    // please modify it according to the actual situation

    // config.headers['Authorization'] = getToken()
    // }
    if (store.getters.token) {
        // 让每个请求携带token
        var tok = getToken()
        config.headers['Token'] = 'Bearer '+tok
    }
    return config
},
error => {
    // do something with request error
    //console.log(error) // for debug
    return Promise.reject(error)
}
)

// response interceptor
service.interceptors.response.use(
/**
 * If you want to get http information such as headers or status
 * Please return  response => response
*/

/**
 * Determine the request status by custom code
 * Here is just an example
 * You can also judge the status by HTTP Status Code
 */
response => {
    const res = response.data;

    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 200) {
    // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
        if (res.code === 40008) {
            Message({
                message: res.msg ,
                type: 'error',
                duration: 5 * 1000
            });
            removeToken();
            removeUserInfoID();
            this.$store.state.token = null;
        }
        // return Promise.reject(new Error(res.msg ))
        return Promise.reject(res)
    } else {
        return res
    }
},
error => {
    //console.log('err' + error) // for debug
        // Message({
        //     message: error.msg,
        //     type: 'error',
        //     duration: 5 * 1000
        // })
        return Promise.reject(error)
    
}
)

export default service